手元の Windows 11 端末に AWS CLI をインストールして AWS CLI コマンドを実行する
コーヒーが好きな emi です。
あらためまして、AWS CLI を手元の Windows 11 端末で使えるようにセットアップします。
作業イメージ
以下の順番で作業します。
- ① AWS CLI をダウンロードしてインストール
- ② AWS CLI 用のIAM ユーザーを作成
- ③ IAM ユーザーのクレデンシャルを登録(プロファイル登録)
- ④ Windows クライアント端末から AWS CLI コマンドを実行する
①AWS CLI をダウンロードしてインストール
以下のドキュメントを参考に、手元の Windows クライアント端末に AWS CLI の最新バージョンをインストールします。
以下のリンクより、Windows 用の AWS CLI MSI インストーラ (64 ビット) をダウンロードして実行します。
「AWSCLIV2.msi」というファイルがダウンロードされます。
https://awscli.amazonaws.com/AWSCLIV2.msi
「AWSCLIV2.msi」をクリックして、AWS CLI をインストールします。
AWS CLI インストールウィザードに従います。
使用許諾契約書の条項の同意にチェックし、次へをクリックします。
今回はデフォルトでインストールしていきます。
インストールが完了したら、コマンドプロンプトを開き、インストールした AWS CLI のバージョンを以下のコマンドで確認します。
aws --version
実行結果
C:\Users\kitani.emi>aws --version aws-cli/2.13.30 Python/3.11.6 Windows/10 exe/AMD64 prompt/off C:\Users\kitani.emi>
②AWS CLI 用の IAM ユーザーを作成
手元の Windows クライアントから AWS CLI コマンドを実行して AWS リソースを操作するには、IAM ユーザーの権限が必要です。
AWS CLI 用の IAM ユーザーを作成し、手元の Windows クライアント端末に埋め込むクレデンシャル(アクセスキーとシークレットアクセスキーのペア)を作成します。
AWS マネジメントコンソールから IAM ユーザーを作成します。
IAM コンソールで [ユーザー] - [ユーザーを追加] をクリックしてください。
ユーザー名は任意のユーザ名を入力し、[次へ] をクリックしてください。
アクセス許可の設定では、手元の Windows クライアント端末から AWS CLI で実行したい操作に必要な権限を付与します。
今回権限は PowerUserAccess をアタッチすることにします。
確認画面が表示されます。[ユーザーの作成] をクリックして IAM ユーザーを作成します。
IAM ユーザーが作成できたら、リンクをクリックして IAM ユーザーの詳細を開きます。
[セキュリティ認証情報] タブより、[アクセスキーを作成] をクリックしてください。
ユースケースで [コマンドラインインターフェイス] を選択します。
「上記のレコメンデーションを確認し、アクセスキーを作成します。」にチェックを入れ、[次へ] をクリックします。
説明タグはオプションです。今回は設定しないで進めますが、何のためのアクセスキーであるか記載しておくと管理がしやすいと思います。
[アクセスキーを作成] をクリックし、アクセスキーを作成します。
アクセスキーが作成できたら、「.csv ファイルをダウンロード」をクリックして、クレデンシャル(アクセスキーとシークレットアクセスキーの文字列)が記載されたファイルをダウンロードします。作成時にしかダウンロードできませんので、忘れずにダウンロードして大切に管理してください。
既存の IAM ユーザーのクレデンシャルを利用していただいても構いませんが、IAM ユーザーのクレデンシャルは漏洩すると AWS 上のリソースを自由に操作できてしまうため、クレデンシャルの管理と付与する権限には十分注意してください。
③ IAM ユーザーのクレデンシャルを登録(プロファイル登録)
ダウンロードしたファイルの中身を確認して、以下ドキュメントを参考にWindows クライアント端末にクレデンシャル(アクセスキーとシークレットアクセスキーの文字列)を設定します。これはプロファイルと呼ばれます。
初めて Windows クライアント端末に IAM ユーザーのクレデンシャル設定をする場合、次のコマンドを実行すると、対話形式でアクセスキーとシークレットアクセスキーを簡単に設定できます。
aws configure
実行結果
C:\Users\kitani.emi>aws configure AWS Access Key ID [None]: AKIAxxxxxxxxxxxxxxxx AWS Secret Access Key [None]: aaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Default region name [None]: ap-northeast-1 Default output format [None]: json C:\Users\kitani.emi>
今回デフォルトのリージョンは東京リージョン(ap-northeast-1)にしていますが、使用するシステムやユーザー居住地によってお好みのリージョンを指定してください。 アウトプット形式は JSON としました。
設定したクレデンシャル情報は、AWS CLI をインストールしたユーザーのホームディレクトリの「.aws」の配下に、設定ファイル(config)と認証情報ファイル(credentials)として以下のように格納されます。初めて設定した場合、IAM ユーザーの情報(プロファイル)は [default]
となっているはずです。
aws configure
コマンドを使わず、これらのファイルを直接編集することもできます。[profile xxx]
とプロファイルを分けることによって、アクセスキーの情報を分けて複数登録することもできます。
- config ファイルの例
[default] region = ap-northeast-1 output = json [profile eic-endpoint-test-role] region = ap-northeast-1 [profile test-role] region = ap-northeast-1
- credentials の例
[default] aws_access_key_id = AKIAxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [eic-endpoint-test-role] aws_access_key_id = AKIAxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [test-role] aws_access_key_id = AKIAxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
④ Windows クライアント端末から AWS CLI コマンドを実行する
それでは準備ができましたので、EC2 の情報を取得するコマンドを実行してみます。
aws ec2 describe-instances
実行結果
C:\Users\kitani.emi>aws ec2 describe-instances { "Reservations": [ { "Groups": [], "Instances": [ { "AmiLaunchIndex": 0, "ImageId": "ami-0222cfd6a9c020197", "InstanceId": "i-0868407c990a6d710", "InstanceType": "t3.medium", "KeyName": "xxx-key", "LaunchTime": "2023-07-26T04:54:54+00:00", "Monitoring": { "State": "disabled" }, "Placement": { "AvailabilityZone": "ap-northeast-1a", "GroupName": "", "Tenancy": "default" }, "Platform": "windows", "PrivateDnsName": "ip-10-0-137-159.ap-northeast-1.compute.internal", "PrivateIpAddress": "10.0.137.159", "ProductCodes": [], "PublicDnsName": "", "State": { "Code": 80, "Name": "stopped" }, : : :
表示できました。 ちなみに、PowerShell でも AWS CLI コマンドを実行できます。
PS C:\Users\kitani.emi> aws ec2 describe-instances { "Reservations": [ { "Groups": [], "Instances": [ { "AmiLaunchIndex": 0, "ImageId": "ami-0222cfd6a9c020197", "InstanceId": "i-0868407c990a6d710", "InstanceType": "t3.medium", "KeyName": "xxx-key", "LaunchTime": "2023-07-26T04:54:54+00:00", "Monitoring": { "State": "disabled" }, "Placement": { "AvailabilityZone": "ap-northeast-1a", "GroupName": "", "Tenancy": "default" }, "Platform": "windows", "PrivateDnsName": "ip-10-0-137-159.ap-northeast-1.compute.internal", "PrivateIpAddress": "10.0.137.159", "ProductCodes": [], "PublicDnsName": "", "State": { "Code": 80, "Name": "stopped" }, : : :
また、コマンドの末尾に --profile xxx
を付けることによって別のプロファイルの権限でコマンドを実行することもできます。
例
aws ec2 describe-instances --profile eic-endpoint-test-role
参考:Windows クライアント端末から AWS CLI をアンインストールする
[コントロールパネル] - [プログラムと機能] - [AWS Command Line Interface v2] からアンインストールが可能です。
ユーザーディレクトリ配下の .aws
フォルダは残ってしまいますので、適宜削除してください。